#ifndef TABLE_H
#define TABLE_H
#include<QtGui>
class QTableWidget;
class QWidget;
class QString;
class QStringList;
/*! 
    \class  Table
    \brief Класс организует интерфейс для работы с таблицами. 
*/
class Table: public QTableWidget
{
    Q_OBJECT;
public:
/*!
    Конструктор класса.
    \param parent указатель на родителя.
*/   
    Table(QWidget *parent=0);
/*!
    Устанавливает размер таблицы.
    \param rowsCoun количество строк.
    \param colsCount количество столбцев.
*/    
    void setSize(const int &rowsCount,const int &colsCount);
/*!
    Добавляет в ячейку текст.
    \param row   индекс строки.
    \param col   индекс столбца.
    \param text  добавляемый текст.
*/    
    void setCell(const int &row, const int &col,const  QString &text);
/*!
    Добавляет в ячейку текст и иконку.
    \param row   индекс строки.
    \param col   индекс столбца.
    \param text  добавляемый текст.
    \param icon  иконка ячейки
*/
    void setCell(const int &row, const int &col,const  QString &text, const QIcon&icon);
/*!
    Добавляет в ячейку данные.
    \param row   индекс строки.
    \param col   индекс столбца.
    \param data  добавляемый данные
*/    
    void setCell(const int &row, const int &col, const QVariant &data);
/*!
    Настраивает начальную ширину столцев. Ширина столбца задается в процентном соотношении 
    от ширины таблицы. 
    @code
      Table table;
      table.setSize(0,5);
      table.setColSettings("5%;35%;30%;10%;20%");
    @endcode
    \param settings настройки ширины столбцев.
*/    
    void setColSettings(const QString&settings);
signals:
/*!
    Генерируется при изменении размера таблицы.
*/
    void sizeChange();
public slots:
/*!
    Помещает в буфер обмена содержимое выделенных ячеек, приводя данные к тексту.
*/
    void copy();
/*!
    Назначает разделитель столбцев.
*/    
    void setColSelector(const QString& selector);
/*!
    Назначает разделитель строк.
*/    
    void setRowSelector(const QString& selector);
/*!
    Возвращает разделитель столцев.
*/    
    QString ColSelector() const;
/*!
    Возвращает разделитель строк.
*/    
    QString RowSelector() const;
private:
    QString colSelector, rowSelector;
    QStringList colSetting;
    void addColumn();
    void addRow();
    QTableWidgetSelectionRange selectedRange();
    void resizeEvent(QResizeEvent *event);
    QVector<int> newColWidth(const QSize&size) const;
};

#endif // TABLE_H
